5 REM" PLINK AND PLONK 3.0 6 [143]" BY WALTER E. MEYERS 10 GOTO 100 20 LN=21:COL=5:GOSUB 50:PRINT PL$(PL):RETURN 30 SYS 49188:C=(PEEK(V)-8)/40:R=(PEEK(V+1)-64)/24:RETURN 35 COL=3+((C3-1)*5):LN=5+((R3-1)*3):GOTO 50 40 LN=10:COL=29 50 POKE 781,LN:POKE 782,COL:POKE 783,0:SYS 65520:RETURN 60 FOR I=S TO S+24:POKE I,0:NEXT:RETURN 70 POKE S+24,15:POKE S+5,45:POKE S+6,165:POKE S+4,33:POKE S+1,6:POKE S,5 75 FOR T=1TO200:NEXT:POKE S+4,32:RETURN 80 POKES+15,HN(P):POKES+1,LN(P):POKES+4,19:FOR T=1TO30:NEXT:POKE S+4,18:RETURN 99 REM --------------------- INITIALIZE 100 PRINT"[147]ONE MOMENT.":FOR I=3 TO 6:POKE 52213+I,I:NEXT:H1=24:V1=50 110 H2=255:V2=200:V=53248:POKE V+2,H1:POKE V+3,V1:POKE V+4,H2:POKE V+5,V2 120 POKE V+39,4:POKE V+40,13:POKE V+41,7:POKE V+42,1:POKE V+23,6:POKE V+29,7 130 S=54272:BL=30:TEMPO=3:DIM B$(17),PO(8,8),HU$(2),FF$(5),PL$(7) 140 READ A:IF A=-99 THEN 180 150 GOTO 140 180 SPRITE=49344 190 FOR J=1 TO 4:FOR I=SP TO SP+63:READ A:POKE I,A:NEXT:SP=SP+64:NEXT 200 JOY=49152 210 READ A:IF A=999 THEN 230 220 POKE JOY,A:JOY=JOY+1:GOTO 210 230 POKE 56334,PEEK(56334) AND 254:POKE 1,PEEK(1) AND 251:SYS 49152 240 POKE 1,PEEK(1) OR 4:POKE 56334,PEEK(56334) OR 1 250 READ A:IF A=999 THEN 270 260 FOR I=0 TO 7:READ B:POKE 61440+(A*8)+I,B:NEXT:GOTO 250 270 POKE 56576,(PEEK(56576) AND 252):POKE 53272,44:POKE 648,200:PRINT"[147]" 280 POKE 53281,11:POKE 53280,11:GOTO 4000 899 REM --------------------- DRAW GRID 900 PRINT"[147]":FOR J=1TO5:FOR I=1TO5:PO(J,I)=0:NEXT:NEXT 910 FOR I=1TO16:PRINTTAB(2) B$(I):NEXT:LN=3:COL=30:FOR J=1TO2:FOR I=1TO2 920 GOSUB 50:PRINT HU$(I) "[209][209][209][209][209][209]":LN=LN+1:NEXT:NEXT:PS(1)=12:PS(2)=12 999 REM ----------------- PLACEMENT SEG 1000 PC(1)=7:PC(2)=13:POKE 52216,3:FOR J=1TO12:FOR P=1TO2:POKE V+21,0 1010 POKE V+39,PC(P):POKE V,128:POKE V+1,136:POKE V+21,1:PL=P 1020 GOSUB 20:GOSUB 30 1030 IF PO(R,C)<>0 THEN GOSUB 40:PRINT M$(1):GOSUB 70:GOTO 1020 1040 IF R=3 AND C=3 THEN GOSUB 40:PRINT M$(3):GOSUB 70:GOTO 1020 1050 PO(R,C)=P:COL=3+((C-1)*5):LN=5+((R-1)*3):GOSUB 80:GOSUB 50:PRINT FF$(P) 1060 GOSUB 40:PRINT M$(0):LN=2+(INT(J/7))+P:COL=BL:IF J>6 THEN LN=LN+1 1070 IF COL>35 THEN COL=30:BL=30 1080 GOSUB 50:PRINT" ":NEXT:BL=BL+1:NEXT:LN=22:COL=0:GOSUB 50:PRINT BL$:P=2 1090 LN=21:COL=0:GOSUB 50:PRINT BL$:LN=22:COL=8:GOSUB 50:PRINT"AND NOW--"; 1100 FOR T=1TO500:NEXT:PRINT "THE FUN BEGINS!":FOR T=1TO1000:NEXT 1110 LN=22:COL=0:GOSUB 50:PRINT BL> 1189 : 1190 P=3-P:Q=3-P 1199 REM -------------------:FROM WHERE 1200 PL=P+2:GOSUB 20:PRINTTAB(10) PL$(7):POKE V+21,0 1210 POKE 52216,3:POKE V+29,1:POKE V+39,PC(P):POKE V+21,1 1220 GOSUB 30:C1=C:R1=R 1230 IF PO(R1,C1)<>P THEN GOSUB 40:PRINT M$(2):GOSUB 70:GOTO 1220 1240 POKE V+21,0:POKE 52216,6:POKE V+29,0:POKE V+21,1:PO(R1,C1)=0:C3=C1:R3=R1 1250 GOSUB 35:PRINT FF$(3):GOSUB 40:PRINT M$(0) 1299 REM --------------------- TO WHERE 1300 PL=P+4:GOSUB 20:PRINTTAB(10)PL$(7) 1310 GOSUB 30:C2=C:R2=R 1320 IF PO(R2,C2)<>0 THEN GOSUB 40:PRINT M$(1):GOSUB 70:GOTO 1370 1330 IF R2=R1 AND C2=C1 THEN GOSUB 40:PRINT M$(4):GOSUB 70:GOTO 1370 1340 IF ABS(R2-R1)>1ORABS(C2-C1)>1 THEN GOSUB 40:PRINT M$(5):GOSUB 70:GOTO 1370 1350 PO(R2,C2)=P:C3=C2:R3=R2:GOSUB 35:PRINT FF$(P):POKE V+21,0:GOSUB 80 1360 GOSUB 40:PRINT M$(0):GOTO 2000 1370 PO(R1,C1)=P:C3=C1:R3=R1:GOSUB 35:PRINT FF$(P):GOTO 1210 1999 REM ----------- CHECK FOR CAPTURES 2000 IF PO(R2-1,C2-1)<>Q THEN 2050 2010 IF PO(R2-2,C2-2)=P THEN X=R2-1:Y=C2-1:GOSUB 2500:GOTO 2050 2020 IF PO(R2-2,C2-2)=0 THEN 2050 2030 IF PO(R2-3,C2-3)=P THEN X=R2-1:Y=C2-1:GOSUB 2500:X=R2-2:Y=C2-2:GOSUB 2500 2049 : 2050 IF PO(R2-1,C2)<>Q THEN 2100 2060 IF PO(R2-2,C2)=P THEN X=R2-1:Y=C2:GOSUB 2500:GOTO 2100 2070 IF PO(R2-2,C2)=0 THEN 2100 2080 IF PO(R2-3,C2)=P THEN X=R2-1:Y=C2:GOSUB 2500:X=R2-2:Y=C2:GOSUB 2500 2099 : 2100 IF PO(R2-1,C2+1)<>Q THEN 2150 2110 IF PO(R2-2,C2+2)=P THEN X=R2-1:Y=C2+1:GOSUB 2500:GOTO 2150 2120 IF PO(R2-2,C2+2)=0 THEN 2150 2130 IF PO(R2-3,C2+3)=P THEN X=R2-1:Y=C2+1:GOSUB 2500:X=R2-2:Y=C2+2:GOSUB 2500 2149 : 2150 IF PO(R2,C2-1)<>Q THEN 2200 2160 IF PO(R2,C2-2)=P THEN X=R2:Y=C2-1:GOSUB 2500:GOTO 2200 2170 IF PO(R2,C2-2)=0 THEN 2200 2180 IF PO(R2,C2-3)=P THEN X=R2:Y=C2-1:GOSUB 2500:Y=C2-2:GOSUB 2500 2199 : 2200 IF PO(R2,C2+1)<>Q THEN 2250 2210 IF PO(R2,C2+2)=P THEN X=R2:Y=C2+1:GOSUB 2500:GOTO 2250 2220 IF PO(R2,C2+2)=0 THEN 2250 2230 IF PO(R2,C2+3)=P THEN X=R2:Y=C2+1:GOSUB 2500:Y=C2+2:GOSUB 2500 2249 : 2250 IF PO(R2+1,C2-1)<>Q THEN 2300 2260 IF PO(R2+2,C2-2)=P THEN X=R2+1:Y=C2-1:GOSUB 2500:GOTO 2300 2270 IF PO(R2+2,C2-2)=0 THEN 2300 2280 IF PO(R2+3,C2-3)=P THEN X=R2+1:Y=C2-1:GOSUB 2500:X=R2+2:Y=C2-2:GOSUB 2500 2299 : 2300 IF PO(R2+1,C2)<>Q THEN 2350 2310 IF PO(R2+2,C2)=P THEN X=R2+1:Y=C2:GOSUB 2500:GOTO 2350 2320 IF PO(R2+2,C2)=0 THEN 2350 2330 IF PO(R2+3,C2)=P THEN X=R2+1:Y=C2:GOSUB 2500:X=R2+2:GOSUB 2500 2349 : 2350 IF PO(R2+1,C2+1)<>Q THEN 2400 2360 IF PO(R2+2,C2+2)=P THEN X=R2+1:Y=C2+1:GOSUB 2500:GOTO 2400 2370 IF PO(R2+2,C2+2)=0 THEN 2400 2380 IF PO(R2+3,C2+3)=P THEN X=R2+1:Y=C2+1:GOSUB 2500:X=R2+2:Y=C2+2:GOSUB 2500 2398 : 2399 REM ----------- CHECK FOR GAME END 2400 IF PS(Q)>1 THEN 1190 2410 LN=21:COL=3:GOSUB 50:PRINT BL$:LN=22:GOSUB 50:PRINT BL$:LN=21:GOSUB 50 2420 PRINT "[155]THAT'S IT--PLAYER" P "WINS!":POKE V+21,0:POKE V,255:POKE V+1,180 2430 POKE V+23,1:POKE V+29,1:POKE V+39,PC(P):IF P=1 THEN POKE 52216,5:GOTO 2450 2440 POKE 52216,4 2450 POKE V+21,1:LN=22:COL=0:GOSUB 50:PRINT " ANOTHER GAME? HIT [158]Q TO "; 2455 PRINT "QUIT, OR ANY":PRINTTAB(7) "OTHER KEY TO PLAY AGAIN.":POKE 198,0 2460 GET AG$:IF AG$="" THEN 2460 2470 IF AG$<>"Q" AND AG$<>"[209]" THEN POKE V+21,0:POKE V+23,0:GOTO 900 2480 POKE V+21,0:PRINT "[147]":POKE 53272,21:POKE 648,4:POKE 56576,PEEK(56576) OR 3 2490 PRINT "[147][154]":POKE SC,6:POKE BO,14:NEW:CLR:END 2500 PO(X,Y)=0:COL=3+((Y-1)*5):LN=5+((X-1)*3):GOSUB 50:PRINT FF$(Q+3) 2510 FOR T=1TO200:NEXT:GOSUB 50:PRINT FF$(3) 2520 PS(Q)=PS(Q)-1:RETURN 2998 : 2999 REM ------------------------ TITLE 3000 RESTORE:PRINT"[147]":GOSUB 60:CC=0:POKE S+24,15:POKE S+5,47:POKE S+6,136:P=4 3010 POKE V+21,6:LN=10:COL=4:GOSUB 50 3020 PRINT"[158]" P$L$I$N$K$ "[146] AND [145][153]" P$L$O$N$K$ 3030 READ HI,LO,DUR:P=6-P:IF HI<0 THEN 3100 3040 A1=INT(RND(1)*(255-24)+24):A2=INT(RND(1)*(200-50)+50):POKE V+P,A1 3050 POKE V+P+1,A2:POKE S+4,19:POKE S+15,HI:POKE S+1,LO:FOR T=1TO DUR*TEMPO 3060 NEXT:POKE S+4,18:REST=DUR/2:FOR T=1 TO REST*TEMPO:NEXT:CC=CC+1 3070 IF CC=27 THEN RESTORE:GOTO 3030 3080 IF CC<52 THEN 3030 3090 FOR I=1 TO 2:READ HI,LO,DUR:NEXT:GOTO 3030 3100 POKE S+24,15:POKE S+5,47:POKE S+6,136:POKE V+21,0:GOTO 900 3999 REM ---------------------- STRINGS 4000 P$="[176][209][201][157][157][157][171][209][203][157][157][157][211][145][145]":L$="[193][157][194][157][173][195][145][145]":O$="[213][209][201][157][157][157][194][194][157][157][157][202][209][203][145][145]" 4010 N$="[176][209][201][157][157][157][194][194][157][157][157][211][211][145][145]":K$="[193][193][157][157][157][171][209][181][157][157][157][211][211][145][145]":I$="[193][157][194][157][211][145][145]" 4020 B$(1)="[144][176][192][192][192][192][178][192][192][192][192][178][192][192][192][192][178][192][192][192][192][178][192][192][192][192][174]":B$(2)="[221] [221] [221] [221] [221] [221]" 4040 FOR I=3 TO 15:B$(I)=B$(2):NEXT: B$(4)="[171][192][192][192][192][219][192][192][192][192][219][192][192][192][192][219][192][192][192][192][219][192][192][192][192][179]" 4050 FOR I=7 TO 13 STEP 3:B$(I)=B$(4):NEXT:B$(8)="[221] [221] [221] [146][221] [221] [221]" 4060 B$(9)=B$(8):B$(16)="[173][192][192][192][192][177][192][192][192][192][177][192][192][192][192][177][192][192][192][192][177][192][192][192][192][189]":HU$(1)="[158]":HU$(2)="[153]" 4100 M$(0)= " [157][157][157][157][157][157][157][157][157][157] [157][157][157][157][157][157][157][157][157][157] " 4110 M$(1)="SOMEONE'S [157][157][157][157][157][157][157][157][157][157]THERE NOW.[157][157][157][157][157][157][157][157][157][157]TRY AGAIN." 4120 M$(2)="YOU DON'T [157][157][157][157][157][157][157][157][157][157]HAVE ONE [157][157][157][157][157][157][157][157][157][157]THERE. " 4130 M$(3)="FORBIDDEN [157][157][157][157][157][157][157][157][157][157]ZONE! [157][157][157][157][157][157][157][157][157][157]TRY AGAIN." 4140 M$(4)="YOU BEGAN [157][157][157][157][157][157][157][157][157][157]THERE. [157][157][157][157][157][157][157][157][157][157]TRY AGAIN." 4150 M$(5)="CAN'T MOVE[157][157][157][157][157][157][157][157][157][157]THAT FAR! [157][157][157][157][157][157][157][157][157][157]TRY AGAIN." 4160 FF$(1)="[158]!#$%[157][157][157][157]&'()":FF$(2)="[153]*+,-[157][157][157][157]:;<=":FF$(3)=" [157][157][157][157] " 4170 FF$(4)="[155]!#$%[157][157][157][157][204][205][206][207]":FF$(5)="[155]*+,-[157][157][157][157][214][215][216][218]" 4180 BL$=" " 4200 PL$(1)="[158]PLAYER 1: PLACE A [158]PLINK.":PL$(2)="[153]PLAYER 2: PLACE A [153]PLONK." 4210 PL$(3)="[158]PLAYER 1: PICK A [158]PLINK, THEN " 4220 PL$(4)="[153]PLAYER 2: PICK A [153]PLONK, THEN " 4230 PL$(5)="[158]PLAYER 1: MAKE YOUR MOVE, AND ":PL$(6)="[153]PLAYER 2:" 4240 PL$(7)="HIT THE FIRE BUTTON.":HN(1)=67:HN(2)=56:LN(1)=56:LN(2)=99 4990 GOTO 3000 4999 REM ------------------------ MUSIC 5000 DATA 67,15,16,33,135,8,37,162,8,37,162,8,42,62,8,42,62,8,44,193,8,56,99,16 5001 DATA 28,49,8,29,221,8,29,221,8,31,165,8,31,165,8,33,135,8,44,193,16 5002 DATA 25,30,8,29,223,8,44,193,16,25,30,8,29,223,8,44,193,8,42,62,8,42,62,8 5003 DATA 37,162,8,37,162,8,33,135,8,33,135,8,29,223,8,28,49,8,25,29,8,22,96,16 5004 DATA 0,0,0,0,0,0,-1,-1,-99 5099 REM ---------------------- SPRITES 5100 DATA 255,255,0,255,255,0,192,3 5101 DATA 0,192,3,0,192,3,0,192 5102 DATA 3,0,192,3,0,192,3,0 5103 DATA 192,3,0,192,3,0,192,3 5104 DATA 0,192,3,0,192,3,0,192 5105 DATA 3,0,192,3,0,192,3,0 5106 DATA 192,3,0,192,3,0,255,255 5107 DATA 0,255,255,0,0,0,0,0 5109 : 5110 DATA 0,0,0,0,255,0,7,24 5111 DATA 224,30,102,120,63,255,252,112 5112 DATA 24,14,119,153,238,254,24,127 5113 DATA 252,24,63,204,24,51,192,24 5114 DATA 3,255,255,255,71,231,226,112 5115 DATA 0,14,63,195,252,31,231,248 5116 DATA 7,255,224,0,255,0,0,0 5117 DATA 0,0,0,0,0,0,0,0 5119 : 5120 DATA 0,0,0,0,255,0,7,255 5121 DATA 224,31,255,248,56,63,236,96 5122 DATA 30,14,79,28,126,252,152,207 5123 DATA 252,216,31,231,251,231,199,255 5124 DATA 227,195,255,195,72,0,18,118 5125 DATA 24,110,63,24,252,31,255,248 5126 DATA 7,255,224,0,255,0,0,0 5127 DATA 0,0,0,0,0,0,0,0 5129 : 5130 DATA 255,128,0,204,223,0,204,223 5131 DATA 224,204,192,248,204,192,60,0 5132 DATA 120,30,112,204,14,224,204,7 5133 DATA 224,204,7,224,120,7,224,6 5134 DATA 103,224,6,103,112,6,110,120 5135 DATA 3,206,60,1,128,31,0,31 5136 DATA 7,255,152,0,255,159,0,0 5137 DATA 24,0,0,31,0,0,0,0 5199 REM ------ CHAR TRANSFER, JOYSTICK 5200 DATA 169,0,133,251,133,253,169,208 5201 DATA 133,252,169,240,133,254,162,16 5202 DATA 160,0,177,251,145,253,136,208 5203 DATA 249,230,252,230,254,202,208,240 5204 DATA 96,0,0,0,173,0,220,41 5205 DATA 15,201,14,240,20,201,13,240 5206 DATA 33,201,11,240,46,201,7,240 5207 DATA 59,173,0,220,41,16,208,228 5208 DATA 96,56,173,1,208,201,112,144 5209 DATA 219,233,24,141,1,208,76,136 5210 DATA 192,0,24,173,1,208,201,184 5211 DATA 176,202,105,24,141,1,208,76 5212 DATA 136,192,0,56,173,0,208,201 5213 DATA 88,144,185,233,40,141,0,208 5214 DATA 76,136,192,0,24,173,0,208 5215 DATA 201,208,176,168,105,40,141,0 5216 DATA 208,76,136,192,0,0,0,0 5217 DATA 162,200,160,0,200,208,253,202 5218 DATA 208,248,76,36,192,999 5299 REM ------------------ CUSTOM FONT 5300 DATA 161,0,0,1,7,14,12,31,31 5301 DATA 163,31,127,255,131,1,241,201,205 5302 DATA 164,248,254,255,254,224,199,140,129 5303 DATA 165,0,0,128,224,240,240,248,248 5304 DATA 166,30,28,12,12,7,1,0,0 5305 DATA 167,127,127,63,128,97,241,127,31 5306 DATA 168,190,254,252,1,134,143,254,248 5307 DATA 169,120,56,48,48,224,128,0,0 5308 DATA 170,0,0,1,7,15,15,31,31 5309 DATA 171,31,113,204,255,1,121,225,193 5310 DATA 172,248,142,51,255,128,158,135,131 5311 DATA 173,0,0,128,224,240,240,248,248 5312 DATA 186,28,28,15,12,7,1,0,0 5313 DATA 187,193,1,255,126,0,252,126,31 5314 DATA 188,131,128,255,126,0,63,126,248 5315 DATA 189,56,56,240,48,224,128,0,0 5316 DATA 193,0,0,0,60,60,60,60,60 5317 DATA 194,60,60,60,60,60,60,60,60 5318 DATA 195,0,0,0,252,252,0,0,0 5319 DATA 201,0,0,0,240,248,124,60,60 5320 DATA 202,60,60,62,31,15,0,0,0 5321 DATA 203,60,60,124,248,240,0,0,0 5322 DATA 204,30,28,13,15,7,1,0,0 5323 DATA 205,127,240,199,128,63,255,127,31 5324 DATA 206,190,15,227,1,252,255,254,248 5325 DATA 207,120,56,176,240,224,128,0,0 5326 DATA 209,0,0,0,255,255,0,0,0 5327 DATA 211,60,60,60,60,60,0,0,0 5328 DATA 213,0,0,0,15,31,62,60,60 5329 DATA 214,28,28,15,12,7,1,0,0 5330 DATA 215,193,1,255,120,243,243,120,31 5331 DATA 216,131,128,255,30,207,207,30,248 5332 DATA 218,56,56,240,48,224,128,0,0 5333 DATA 235,60,60,60,63,63,60,60,60 5334 DATA 237,60,60,60,63,63,0,0,0 5335 DATA 240,0,0,0,63,63,60,60,60 5336 DATA 245,60,60,120,240,240,120,60,60,999